home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / COMPILER / SATHER / !Sather / System / Common / h / c next >
Text File  |  1996-08-20  |  13KB  |  315 lines

  1. #ifndef _C_H_ 
  2. #define _C_H_
  3.  
  4. #include <stddef.h>  /* needed for ptrdiff_t */
  5.  
  6. typedef char             C_CHAR;
  7. typedef unsigned char    C_UNSIGNED_CHAR;
  8. typedef signed char      C_SIGNED_CHAR;
  9. typedef short            C_SHORT;
  10. typedef int              C_INT;
  11. typedef long             C_LONG;
  12. typedef unsigned short   C_UNSIGNED_SHORT;
  13. typedef unsigned int     C_UNSIGNED_INT;
  14. typedef unsigned long    C_UNSIGNED_LONG;
  15. typedef float            C_FLOAT;
  16. typedef double           C_DOUBLE;
  17. typedef long double      C_LONG_DOUBLE;
  18.  
  19. typedef void*            C_PTR;
  20. typedef char*            C_CHAR_PTR;
  21. typedef unsigned char*   C_UNSIGNED_CHAR_PTR;
  22. typedef signed char*     C_SIGNED_CHAR_PTR;
  23. typedef short*           C_SHORT_PTR;
  24. typedef int*             C_INT_PTR;
  25. typedef long*            C_LONG_PTR;
  26. typedef unsigned short*  C_UNSIGNED_SHORT_PTR;
  27. typedef unsigned int*    C_UNSIGNED_INT_PTR;
  28. typedef unsigned long*   C_UNSIGNED_LONG_PTR;
  29. typedef float*           C_FLOAT_PTR;
  30. typedef double*          C_DOUBLE_PTR;
  31. typedef long double*     C_LONG_DOUBLE_PTR; 
  32.  
  33. typedef size_t           C_SIZE_T;
  34. typedef ptrdiff_t        C_PTRDIFF_T;
  35.  
  36. typedef struct C_CHAR_boxed_struct { OB_HEADER header; C_CHAR immutable_part; } *C_CHAR_boxed;
  37. typedef struct C_UNSIGNED_CHAR_boxed_struct { OB_HEADER header; C_UNSIGNED_CHAR immutable_part; } *C_UNSIGNED_CHAR_boxed;
  38. typedef struct C_SIGNED_CHAR_boxed_struct { OB_HEADER header; C_SIGNED_CHAR immutable_part; } *C_SIGNED_CHAR_boxed;
  39. typedef struct C_SHORT_boxed_struct { OB_HEADER header; C_SHORT immutable_part; } *C_SHORT_boxed;
  40. typedef struct C_INT_boxed_struct { OB_HEADER header; C_INT immutable_part; } *C_INT_boxed;
  41. typedef struct C_LONG_boxed_struct { OB_HEADER header; C_LONG immutable_part; } *C_LONG_boxed;
  42. typedef struct C_UNSIGNED_SHORT_boxed_struct { OB_HEADER header; C_UNSIGNED_SHORT immutable_part; } *C_UNSIGNED_SHORT_boxed;
  43. typedef struct C_UNSIGNED_INT_boxed_struct { OB_HEADER header; C_UNSIGNED_INT immutable_part; } *C_UNSIGNED_INT_boxed;
  44. typedef struct C_UNSIGNED_LONG_boxed_struct { OB_HEADER header; C_UNSIGNED_LONG immutable_part; } *C_UNSIGNED_LONG_boxed;
  45. typedef struct C_FLOAT_boxed_struct { OB_HEADER header; C_FLOAT immutable_part; } *C_FLOAT_boxed;
  46. typedef struct C_DOUBLE_boxed_struct { OB_HEADER header; C_DOUBLE immutable_part; } *C_DOUBLE_boxed;
  47. typedef struct C_LONG_DOUBLE_boxed_struct { OB_HEADER header; C_LONG_DOUBLE immutable_part; } *C_LONG_DOUBLE_boxed;
  48. typedef struct C_SIZE_T_boxed_struct { OB_HEADER header; C_SIZE_T immutable_part; } *C_SIZE_T_boxed;
  49. typedef struct C_PTRDIFF_T_boxed_struct { OB_HEADER header; C_PTRDIFF_T immutable_part; } *C_PTRDIFF_T_boxed;
  50.  
  51.  
  52. typedef struct C_PTR_boxed_struct { OB_HEADER header; C_PTR immutable_part; } *C_PTR_boxed;
  53. typedef struct C_CHAR_PTR_boxed_struct { OB_HEADER header; C_CHAR_PTR immutable_part; } *C_CHAR_PTR_boxed;
  54. typedef struct C_UNSIGNED_CHAR_PTR_boxed_struct { OB_HEADER header; C_UNSIGNED_CHAR_PTR immutable_part; } *C_UNSIGNED_CHAR_PTR_boxed;
  55. typedef struct C_SIGNED_CHAR_PTR_boxed_struct { OB_HEADER header; C_SIGNED_CHAR_PTR immutable_part; } *C_SIGNED_CHAR_PTR_boxed;
  56. typedef struct C_SHORT_PTR_boxed_struct { OB_HEADER header; C_SHORT_PTR immutable_part; } *C_SHORT_PTR_boxed;
  57. typedef struct C_INT_PTR_boxed_struct { OB_HEADER header; C_INT_PTR immutable_part; } *C_INT_PTR_boxed;
  58. typedef struct C_LONG_PTR_boxed_struct { OB_HEADER header; C_LONG_PTR immutable_part; } *C_LONG_PTR_boxed;
  59. typedef struct C_UNSIGNED_SHORT_PTR_boxed_struct { OB_HEADER header; C_UNSIGNED_SHORT_PTR immutable_part; } *C_UNSIGNED_SHORT_PTR_boxed;
  60. typedef struct C_UNSIGNED_INT_PTR_boxed_struct { OB_HEADER header; C_UNSIGNED_INT_PTR immutable_part; } *C_UNSIGNED_INT_PTR_boxed;
  61. typedef struct C_UNSIGNED_LONG_PTR_boxed_struct { OB_HEADER header; C_UNSIGNED_LONG_PTR immutable_part; } *C_UNSIGNED_LONG_PTR_boxed;
  62. typedef struct C_FLOAT_PTR_boxed_struct { OB_HEADER header; C_FLOAT_PTR immutable_part; } *C_FLOAT_PTR_boxed;
  63. typedef struct C_DOUBLE_PTR_boxed_struct { OB_HEADER header; C_DOUBLE_PTR immutable_part; } *C_DOUBLE_PTR_boxed;
  64. typedef struct C_LONG_DOUBLE_PTR_boxed_struct { OB_HEADER header; C_LONG_DOUBLE_PTR immutable_part; } *C_LONG_DOUBLE_PTR_boxed;
  65.  
  66. #define CHARC_CHAR(x)      ((C_CHAR)(x))
  67. #define C_CHARCHAR(x)      ((CHAR)(x))
  68. #define C_CHARPLUS(a,b)     a+b
  69. #define C_CHARMINUS(a,b)    a-b
  70. #define C_CHARTIMES(a,b)    a*b
  71. #define C_CHARDIV(a,b)       a/b
  72. #define C_CHARIS_LT(a,b)    (a<b)
  73. #define C_CHARIS_LEQ(a,b)   (a<=b)
  74. #define C_CHARIS_GT(a,b)    (a>b)
  75. #define C_CHARIS_GEQ(a,b)   (a>=b)
  76.  
  77. #define CHARC_UNSIGNED_CHAR(x)      ((C_UNSIGNED_CHAR)(x))
  78. #define C_UNSIGNED_CHARCHAR(x)      ((CHAR)(x))
  79. #define C_UNSIGNED_CHARPLUS(a,b)     a+b
  80. #define C_UNSIGNED_CHARMINUS(a,b)    a-b
  81. #define C_UNSIGNED_CHARTIMES(a,b)    a*b
  82. #define C_UNSIGNED_CHARDIV(a,b)       a/b
  83. #define C_UNSIGNED_CHARIS_LT(a,b)    (a<b)
  84. #define C_UNSIGNED_CHARIS_LEQ(a,b)   (a<=b)
  85. #define C_UNSIGNED_CHARIS_GT(a,b)    (a>b)
  86. #define C_UNSIGNED_CHARIS_GEQ(a,b)   (a>=b)
  87.  
  88. #define CHARC_SIGNED_CHAR(x)      ((C_SIGNED_CHAR)(x))
  89. #define C_SIGNED_CHARCHAR(x)      ((CHAR)(x))
  90. #define C_SIGNED_CHARPLUS(a,b)     a+b
  91. #define C_SIGNED_CHARMINUS(a,b)    a-b
  92. #define C_SIGNED_CHARTIMES(a,b)    a*b
  93. #define C_SIGNED_CHARDIV(a,b)       a/b
  94. #define C_SIGNED_CHARIS_LT(a,b)    (a<b)
  95. #define C_SIGNED_CHARIS_LEQ(a,b)   (a<=b)
  96. #define C_SIGNED_CHARIS_GT(a,b)    (a>b)
  97. #define C_SIGNED_CHARIS_GEQ(a,b)   (a>=b)
  98.  
  99. #define INTC_SHORT(x)         ((C_SHORT)(x))
  100. #define C_SHORTINT(x)         ((INT)(x))
  101. #define C_SHORTPLUS(a,b)      a+b
  102. #define C_SHORTMINUS(a,b)     a-b
  103. #define C_SHORTTIMES(a,b)     a*b
  104. #define C_SHORTDIV(a,b)       a/b
  105. #define C_SHORTIS_LT(a,b)    (a<b)
  106. #define C_SHORTIS_LEQ(a,b)   (a<=b)
  107. #define C_SHORTIS_GT(a,b)    (a>b)
  108. #define C_SHORTIS_GEQ(a,b)   (a>=b)
  109.  
  110. #define INTC_INT(x)         ((C_INT)(x))
  111. #define C_INTINT(x)         ((INT)(x))
  112. #define C_INTPLUS(a,b)      a+b
  113. #define C_INTMINUS(a,b)     a-b
  114. #define C_INTTIMES(a,b)     a*b
  115. #define C_INTDIV(a,b)       a/b
  116. #define C_INTIS_LT(a,b)    (a<b)
  117. #define C_INTIS_LEQ(a,b)   (a<=b)
  118. #define C_INTIS_GT(a,b)    (a>b)
  119. #define C_INTIS_GEQ(a,b)   (a>=b)
  120.  
  121. #define INTC_LONG(x)         ((C_LONG)(x))
  122. #define C_LONGINT(x)         ((INT)(x))
  123. #define C_LONGPLUS(a,b)      a+b
  124. #define C_LONGMINUS(a,b)     a-b
  125. #define C_LONGTIMES(a,b)     a*b
  126. #define C_LONGDIV(a,b)       a/b
  127. #define C_LONGIS_LT(a,b)    (a<b)
  128. #define C_LONGIS_LEQ(a,b)   (a<=b)
  129. #define C_LONGIS_GT(a,b)    (a>b)
  130. #define C_LONGIS_GEQ(a,b)   (a>=b)
  131.  
  132. #define INTC_UNSIGNED_SHORT(x)         ((C_UNSIGNED_SHORT)(x))
  133. #define C_UNSIGNED_SHORTINT(x)         ((INT)(x))
  134. #define C_UNSIGNED_SHORTPLUS(a,b)      a+b
  135. #define C_UNSIGNED_SHORTMINUS(a,b)     a-b
  136. #define C_UNSIGNED_SHORTTIMES(a,b)     a*b
  137. #define C_UNSIGNED_SHORTDIV(a,b)       a/b
  138. #define C_UNSIGNED_SHORTIS_LT(a,b)    (a<b)
  139. #define C_UNSIGNED_SHORTIS_LEQ(a,b)   (a<=b)
  140. #define C_UNSIGNED_SHORTIS_GT(a,b)    (a>b)
  141. #define C_UNSIGNED_SHORTIS_GEQ(a,b)   (a>=b)
  142.  
  143. #define INTC_UNSIGNED_INT(x)         ((C_UNSIGNED_INT)(x))
  144. #define C_UNSIGNED_INTINT(x)         ((INT)(x))
  145. #define C_UNSIGNED_INTPLUS(a,b)      a+b
  146. #define C_UNSIGNED_INTMINUS(a,b)     a-b
  147. #define C_UNSIGNED_INTTIMES(a,b)     a*b
  148. #define C_UNSIGNED_INTDIV(a,b)       a/b
  149. #define C_UNSIGNED_INTIS_LT(a,b)    (a<b)
  150. #define C_UNSIGNED_INTIS_LEQ(a,b)   (a<=b)
  151. #define C_UNSIGNED_INTIS_GT(a,b)    (a>b)
  152. #define C_UNSIGNED_INTIS_GEQ(a,b)   (a>=b)
  153.  
  154. #define INTC_UNSIGNED_LONG(x)         ((C_UNSIGNED_LONG)(x))
  155. #define C_UNSIGNED_LONGINT(x)         ((INT)(x))
  156. #define C_UNSIGNED_LONGPLUS(a,b)      a+b
  157. #define C_UNSIGNED_LONGMINUS(a,b)     a-b
  158. #define C_UNSIGNED_LONGTIMES(a,b)     a*b
  159. #define C_UNSIGNED_LONGDIV(a,b)       a/b
  160. #define C_UNSIGNED_LONGIS_LT(a,b)    (a<b)
  161. #define C_UNSIGNED_LONGIS_LEQ(a,b)   (a<=b)
  162. #define C_UNSIGNED_LONGIS_GT(a,b)    (a>b)
  163. #define C_UNSIGNED_LONGIS_GEQ(a,b)   (a>=b)
  164.  
  165. #define FLTC_FLOAT(x)            ((C_FLOAT)(x))
  166. #define C_FLOATFLT(x)            ((FLT)(x))
  167. #define C_FLOATPLUS(a,b)         a+b
  168. #define C_FLOATMINUS(a,b)        a-b
  169. #define C_FLOATTIMES(a,b)        a*b
  170. #define C_FLOATDIV(a,b)          a/b
  171. #define C_FLOATIS_LT(a,b)       (a<b)
  172. #define C_FLOATIS_LEQ(a,b)      (a<=b)
  173. #define C_FLOATIS_GT(a,b)       (a>b)
  174. #define C_FLOATIS_GEQ(a,b)      (a>=b)
  175.  
  176. #define FLTDC_DOUBLE(x)         ((C_DOUBLE)(x))
  177. #define C_DOUBLEFLTD(x)         ((FLTD)(x))
  178. #define C_DOUBLEPLUS(a,b)       a+b
  179. #define C_DOUBLEMINUS(a,b)      a-b
  180. #define C_DOUBLETIMES(a,b)      a*b
  181. #define C_DOUBLEDIV(a,b)        a/b
  182. #define C_DOUBLEIS_LT(a,b)      (a<b)
  183. #define C_DOUBLEIS_LEQ(a,b)     (a<=b)
  184. #define C_DOUBLEIS_GT(a,b)      (a>b)
  185. #define C_DOUBLEIS_GEQ(a,b)     (a>=b)
  186.  
  187. #define FLTDXC_LONG_DOUBLE(x)         ((C_LONG_DOUBLE)(x))
  188. #define C_LONG_DOUBLEFLTD(x)         ((FLTDX)(x))
  189. #define C_LONG_DOUBLEPLUS(a,b)       a+b
  190. #define C_LONG_DOUBLEMINUS(a,b)      a-b
  191. #define C_LONG_DOUBLETIMES(a,b)      a*b
  192. #define C_LONG_DOUBLEDIV(a,b)        a/b
  193. #define C_LONG_DOUBLEIS_LT(a,b)      (a<b)
  194. #define C_LONG_DOUBLEIS_LEQ(a,b)     (a<=b)
  195. #define C_LONG_DOUBLEIS_GT(a,b)      (a>b)
  196. #define C_LONG_DOUBLEIS_GEQ(a,b)     (a>=b)
  197.  
  198.  
  199. #define C_CHAR_IS_EQ(a,b)             STD_IS_EQ(a,b)
  200. #define C_UNSIGNED_CHAR_IS_EQ(a,b)    STD_IS_EQ(a,b)
  201. #define C_SIGNED_CHAR_IS_EQ(a,b)      STD_IS_EQ(a,b)
  202. #define C_SHORT_IS_EQ(a,b)            STD_IS_EQ(a,b)
  203. #define C_INT_IS_EQ(a,b)              STD_IS_EQ(a,b)
  204. #define C_LONG_IS_EQ(a,b)             STD_IS_EQ(a,b)
  205. #define C_UNSIGNED_SHORT_IS_EQ(a,b)   STD_IS_EQ(a,b)
  206. #define C_UNSIGNED_INT_IS_EQ(a,b)     STD_IS_EQ(a,b)
  207. #define C_UNSIGNED_LONG_IS_EQ(a,b)    STD_IS_EQ(a,b)
  208. #define C_FLOAT_IS_EQ(a,b)            STD_IS_EQ(a,b)
  209. #define C_DOUBLE_IS_EQ(a,b)           STD_IS_EQ(a,b)
  210. #define C_LONG_DOUBLE_IS_EQ(a,b)      STD_IS_EQ(a,b)
  211.  
  212.  
  213. #define C_CHAR_zero                   (C_CHAR)0
  214. #define C_UNSIGNED_CHAR_zero          (C_UNSIGNED_CHAR)0
  215. #define C_SIGNED_CHAR_zero            (C_SIGNED_CHAR)0
  216. #define C_SHORT_zero                  (C_SHORT)0
  217. #define C_INT_zero                    (C_INT)0
  218. #define C_LONG_zero                   (C_LONG)0
  219. #define C_UNSIGNED_SHORT_zero         (C_UNSIGNED_SHORT)0
  220. #define C_UNSIGNED_INT_zero           (C_UNSIGNED_INT)0
  221. #define C_UNSIGNED_LONG_zero          (C_UNSIGNED_LONG)0
  222. #define C_FLOAT_zero                  (C_FLOAT)0.0
  223. #define C_DOUBLE_zero                 (C_DOUBLE)0.0
  224. #define C_LONG_DOUBLE_zero            (C_LONG_DOUBLE)0.0
  225. #define C_SIZE_T_zero                 (C_SIZE_T)0
  226.  
  227.  
  228. #define C_CHAR_IS_VOID(a)             ((a)==0)
  229. #define C_UNSIGNED_CHAR_IS_VOID(a)    ((a)==0)
  230. #define C_SIGNED_CHAR_IS_VOID(a)      ((a)==0)
  231. #define C_SHORT_IS_VOID(a)            ((a)==0)
  232. #define C_INT_IS_VOID(a)              ((a)==0)
  233. #define C_LONG_IS_VOID(a)             ((a)==0)
  234. #define C_UNSIGNED_SHORT_IS_VOID(a)   ((a)==0)
  235. #define C_UNSIGNED_INT_IS_VOID(a)     ((a)==0)
  236. #define C_UNSIGEND_LONG_IS_VOID(a)    ((a)==0)
  237. #define C_FLOAT_IS_VOID(a)            ((a)==0.0)
  238. #define C_DOUBLE_IS_VOID(a)           ((a)==0.0)
  239. #define C_LONG_DOUBLE_IS_VOID(a)      ((a)==0.0)
  240.  
  241.  
  242. #define C_PTR_IS_EQ(a,b)                  (a==b)
  243. #define C_CHAR_PTR_IS_EQ(a,b)             (a==b)
  244. #define C_UNSIGNED_CHAR_PTR_IS_EQ(a,b)    (a==b)
  245. #define C_SIGNED_CHAR_PTR_IS_EQ(a,b)      (a==b)
  246. #define C_SHORT_PTR_IS_EQ(a,b)            (a==b)
  247. #define C_INT_PTR_IS_EQ(a,b)              (a==b)
  248. #define C_LONG_PTR_IS_EQ(a,b)             (a==b)
  249. #define C_UNSIGNED_SHORT_PTR_IS_EQ(a,b)   (a==b)
  250. #define C_UNSIGNED_INT_PTR_IS_EQ(a,b)     (a==b)
  251. #define C_UNSIGNED_LONG_PTR_IS_EQ(a,b)    (a==b)
  252. #define C_FLOAT_PTR_IS_EQ(a,b)            (a==b)
  253. #define C_DOUBLE_PTR_IS_EQ(a,b)           (a==b)
  254. #define C_LONG_DOUBLE_PTR_IS_EQ(a,b)      (a==b)
  255.  
  256.  
  257. #define C_PTR_zero                        NULL           
  258. #define C_CHAR_PTR_zero                   NULL
  259. #define C_UNSIGNED_CHAR_PTR_zero          NULL
  260. #define C_SIGNED_CHAR_PTR_zero            NULL
  261. #define C_SHORT_PTR_zero                  NULL
  262. #define C_INT_PTR_zero                    NULL
  263. #define C_LONG_PTR_zero                   NULL
  264. #define C_UNSIGNED_SHORT_PTR_zero         NULL
  265. #define C_UNSIGNED_INT_PTR_zero           NULL
  266. #define C_UNSIGNED_LONG_PTR_zero          NULL
  267. #define C_FLOAT_PTR_zero                  NULL
  268. #define C_DOUBLE_PTR_zero                 NULL
  269. #define C_LONG_DOUBLE_PTR_zero            NULL
  270.  
  271. #define C_PTR_IS_VOID(a)              ((a)==NULL)
  272. #define C_CHAR_PTR_IS_VOID(a)         ((a)==NULL)
  273. #define C_UNSIGNED_CHAR_PTR_IS_VOID(a)(a)==NULL)
  274. #define C_SIGNED_CHAR_PTR_IS_VOID(a)  ((a)==NULL)
  275. #define C_SHORT_PTR_IS_VOID(a)        ((a)==NULL)
  276. #define C_INT_PTR_IS_VOID(a)          ((a)==NULL)
  277. #define C_LONG_PTR_IS_VOID(a)         ((a)==NULL)
  278. #define C_UNSIGNED_SHORT_PTR_IS_VOID(a)((a)==NULL)
  279. #define C_UNSIGNED_INT_PTR_IS_VOID(a) ((a)==NULL)
  280. #define C_UNSIGEND_LONG_PTR_IS_VOID(a)((a)==NULL)
  281. #define C_FLOAT_PTR_IS_VOID(a)        ((a)==NULL)
  282. #define C_DOUBLE_PTR_IS_VOID(a)       ((a)==NULL)
  283. #define C_LONG_DOUBLE_PTR_IS_VOID(a)  ((a)==NULL)
  284.  
  285. #endif
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.